; Music of Ricochet (1986) (Blaby Computer Games)
; Ripped by Megachur the 11/02/2009

; Need System Vectors

	write "RICOCHET.BIN"

music_date_rip	equ &0b29
music_adr	equ &673e
first_theme	equ 0
last_theme	equ 0	; 0 -> 0

	read "music_header_v1_0.asm"

.l673e
	ld hl,l69b1
	ld (l6981),hl
	ld (l6990),hl
	ld (l699f),hl
	ld a,#01
	ld (l6985),a
	ld (l6994),a
	ld (l69a3),a
	ld a,(iy+#03)
	ld (l6983),a
	ld a,(iy+#04)
	ld (l6984),a
	ld a,(iy+#05)
	ld (l6992),a
	ld a,(iy+#06)
	ld (l6993),a
	ld a,(iy+#07)
	ld (l69a1),a
	ld a,(iy+#08)
	ld (l69a2),a
	ld (l67b5),iy
	call #bca7
	ld hl,l67a7
	ld b,#81
	ld c,#fc
	ld de,l67ae
	call #bcef
	ld hl,l67a1
	ld de,#0001
	ld bc,#0001
	call #bce9
	ret
	ld hl,l67a1
	call #bcec
	ret
.l67a1
	nop
	nop
	ld bc,#0100
.l67a7 equ $ + 1
	db #00,#00,#00,#00,#81,#ae,#67,#fc
;
.play_music
.l67ae
;
	di
	push ix
	push iy
.l67b5 equ $ + 2
	ld iy,l6bb9
	ld a,(iy+#00)
	and a
	ld ix,l6981
	jp z,l67d0
	cp #01
	jp z,l67cd
	call l68d8
	jp l67d0
.l67cd
	call l6819
.l67d0
	ld a,(iy+#01)
	and a
	ld ix,l6990
	jp z,l67e9
	cp #01
	jp z,l67e6
	call l68d8
	jp l67e9
.l67e6
	call l6819
.l67e9
	ld a,(iy+#02)
	and a
	ld ix,l699f
	jp z,l6805
	cp #01
	jp z,l6802
	call l68d8
	pop iy
	pop ix
	ei
	ret
.l6802
	call l6819
.l6805
	pop ix
	pop iy
	ei
	ret
.l680b
	ld hl,#0000
	ld b,#08
.l6810
	add hl,hl
	rla
	jp nc,l6816
	add hl,de
.l6816
	djnz l6810
	ret
.l6819
	ld a,(ix+#06)
	call #bcad
	and #07
	cp #04
	ret nz
.l6824
	ld e,(ix+#00)
	ld d,(ix+#01)
	ld a,(de)
	and a
	jp z,l686e
	push de
	ld de,(l69ae)
	call l680b
	ld (ix+#0d),l
	ld (ix+#0e),h
	pop hl
	inc hl
	ld a,(hl)
	and a
	jp z,l68c0
	ld a,(l69b0)
	add (hl)
	add (ix+#05)
.l684b
	inc hl
	ld (ix+#00),l
	ld (ix+#01),h
	ld l,a
	ld h,#00
	add hl,hl
	ld bc,l69b2
	add hl,bc
	ld a,(hl)
	ld (ix+#09),a
	inc hl
	ld a,(hl)
	ld (ix+#0a),a
	ld bc,#0006
	push ix
	pop hl
	add hl,bc
	call #bcaa
	ret
.l686e
	dec (ix+#04)
	jp z,l688e
	ld e,(ix+#02)
	ld d,(ix+#03)
	inc de
	inc de
	ld a,(de)
	ld (ix+#00),a
	inc de
	ld a,(de)
	ld (ix+#01),a
	dec de
	dec de
	ld a,(de)
	ld (ix+#05),a
	jp l6824
.l688e
	ld l,(ix+#02)
	ld h,(ix+#03)
	ld bc,#0004
	add hl,bc
.l6898
	ld a,(hl)
	and a
	jp m,l68c5
	jp nz,l68a4
	inc (ix+#04)
	ret
.l68a4
	ld (ix+#02),l
	ld (ix+#03),h
	ld (ix+#04),a
	inc hl
	ld a,(hl)
	ld (ix+#05),a
	inc hl
	ld a,(hl)
	ld (ix+#00),a
	inc hl
	ld a,(hl)
	ld (ix+#01),a
	jp l6824
	ret
.l68c0
	ld a,#00
	jp l684b
.l68c5
	inc hl
	ld a,(hl)
	ld (ix+#07),a
	inc hl
	ld a,(hl)
	ld (ix+#08),a
	inc hl
	ld a,(hl)
	ld (ix+#0c),a
	inc hl
	jp l6898
.l68d8
	ld a,(ix+#06)
	call #bcad
	and #07
	cp #04
	ret nz
.l68e3
	ld e,(ix+#00)
	ld d,(ix+#01)
	ld a,(de)
	and a
	jp z,l692c
	push de
	ld de,(l69ae)
	call l680b
	ld (ix+#0d),l
	ld (ix+#0e),h
	pop hl
	inc hl
	ld a,(hl)
	ld (ix+#07),a
	inc hl
	ld a,(hl)
	ld (ix+#08),a
	inc hl
	ld a,(hl)
	ld (ix+#0b),a
	inc hl
	ld a,(hl)
	ld (ix+#09),a
	inc hl
	ld a,(hl)
	ld (ix+#0a),a
	inc hl
	xor a
	ld (ix+#0c),a
	ld (ix+#00),l
	ld (ix+#01),h
	ld bc,#0006
	push ix
	pop hl
	add hl,bc
	call #bcaa
	ret
.l692c
	dec (ix+#04)
	jp z,l6945
	ld e,(ix+#02)
	ld d,(ix+#03)
	inc de
	ld a,(de)
	ld (ix+#00),a
	inc de
	ld a,(de)
	ld (ix+#01),a
	jp l68e3
.l6945
	ld l,(ix+#02)
	ld h,(ix+#03)
	ld bc,#0003
	add hl,bc
	ld a,(hl)
	and a
	jp nz,l6958
	inc (ix+#04)
	ret
.l6958
	ld (ix+#02),l
	ld (ix+#03),h
	ld (ix+#04),a
	inc hl
	ld a,(hl)
	ld (ix+#00),a
	inc hl
	ld a,(hl)
	ld (ix+#01),a
	jp l68e3
	ret
.l696f
	ld b,#0f
.l6971
	ld a,#10
	sub b
	push bc
	push af
	call #bcbc
	pop af
	call #bcbf
	pop bc
	djnz l6971
	ret
.l6985 equ $ + 4
.l6984 equ $ + 3
.l6983 equ $ + 2
.l6981
	db #14,#6d,#3e,#6c,#01,#2f,#01,#08
.l6990 equ $ + 7
	db #06,#fa,#01,#00,#0d,#00,#01,#14
.l6994 equ $ + 3
.l6993 equ $ + 2
.l6992 equ $ + 1
	db #6d,#a3,#6c,#01,#32,#04,#08,#06
.l699f equ $ + 6
	db #aa,#01,#00,#0d,#00,#01,#5a,#6e
.l69a3 equ $ + 2
.l69a2 equ $ + 1
.l69a1
	db #ea,#6c,#01,#00,#02,#01,#07,#00
.l69b0 equ $ + 7
.l69ae equ $ + 5
	db #00,#02,#00,#20,#00,#04,#00,#f4
.l69b2 equ $ + 1
.l69b1
	db #00,#00,#00,#ee,#0e,#18,#0e,#4d
	db #0d,#8e,#0c,#da,#0b,#2f,#0b,#8f
	db #0a,#f7,#09,#68,#09,#e1,#08,#61
	db #08,#e9,#07,#77,#07,#0c,#07,#a7
	db #06,#47,#06,#ed,#05,#98,#05,#47
	db #05,#fc,#04,#b4,#04,#70,#04,#31
	db #04,#f4,#03,#bc,#03,#86,#03,#53
	db #03,#24,#03,#f6,#02,#cc,#02,#a4
	db #02,#7e,#02,#5a,#02,#38,#02,#18
	db #02,#fa,#01,#de,#01,#c3,#01,#aa
	db #01,#92,#01,#7b,#01,#66,#01,#52
	db #01,#3f,#01,#2d,#01,#1c,#01,#0c
	db #01,#fd,#00,#ef,#00,#e1,#00,#d5
	db #00,#c9,#00,#be,#00,#b3,#00,#a9
	db #00,#9f,#00,#96,#00,#8e,#00,#86
	db #00,#7f,#00,#77,#00,#71,#00,#6a
	db #00,#64,#00,#5f,#00,#59,#00,#54
	db #00,#50,#00,#4b,#00,#47,#00,#43
	db #00,#3f,#00,#3c,#00,#38,#00,#35
	db #00,#32,#00,#2f,#00,#2d,#00,#2a
	db #00,#28,#00,#26,#00,#24,#00,#22
	db #00,#20,#00,#1e,#00,#1c,#00,#1b
	db #00,#19,#00,#18,#00,#16,#00,#15
	db #00,#14,#00,#13,#00,#12,#00,#11
	db #00,#10,#00,#00,#00,#00,#00,#00
	db #02,#01,#0f,#02,#05,#fd,#04,#00
	db #00,#00,#00,#00,#00,#00,#00,#00
	db #02,#01,#9c,#01,#05,#19,#03,#00
	db #00,#00,#00,#00,#00,#00,#00,#00
	db #02,#01,#0f,#01,#0f,#ff,#02,#00
	db #00,#00,#00,#00,#00,#00,#00,#00
	db #82,#01,#b5,#01,#04,#19,#03,#00
	db #00,#00,#00,#00,#00,#00,#00,#00
	db #03,#01,#0f,#01,#04,#fe,#02,#07
	db #ff,#04,#00,#00,#00,#00,#00,#00
	db #83,#01,#04,#02,#01,#f8,#02,#01
	db #04,#02,#00,#00,#00,#00,#00,#00
	db #02,#07,#02,#01,#0e,#ff,#04,#00
	db #00,#00,#00,#00,#00,#00,#00,#00
	db #82,#04,#01,#01,#04,#ff,#01,#00
	db #00,#00,#00,#00,#00,#00,#00,#00
	db #02,#01,#0f,#01,#0f,#ff,#08,#00
	db #00,#00,#00,#00,#00,#00,#00,#00
	db #04,#40,#00,#01,#7f,#ff,#02,#7f
	db #ff,#03,#7f,#ff,#04,#00,#00,#00
	db #04,#00,#0a,#01,#00,#0f,#01,#03
	db #ff,#01,#0c,#ff,#0a,#00,#00,#00
	db #04,#40,#00,#01,#7f,#01,#02,#7f
	db #01,#03,#7f,#01,#04,#00,#00,#00
	db #04,#00,#0f,#01,#00,#0a,#01,#00
	db #05,#01,#00,#00,#01,#00,#00,#00
	db #01,#00,#00,#00,#00,#00,#00,#00
	db #00,#00,#00,#00,#00,#00,#00,#00
	db #04,#00,#00,#01,#0f,#01,#0a,#7f
	db #00,#01,#0f,#ff,#14,#00,#00,#00
	db #01,#00,#00,#00,#00,#00,#00,#00
	db #00,#00,#00,#00,#00,#00,#00,#00
	db #01,#0f,#01,#01,#0f,#01,#01,#03
	db #ff,#0a,#0c,#ff,#1e,#00,#00,#00
	db #00,#00,#00,#00,#00,#00,#00,#00
	db #00,#00,#00,#00,#00,#00,#00,#00
	db #02,#00,#0f,#01,#0f,#ff,#0a,#00
	db #0f,#01,#03,#ff,#0a,#0c,#ff,#1e
	db #00,#00,#00,#00,#00,#00,#00,#00
	db #00,#00,#00,#00,#00,#00,#00,#00
.l6bb9
	db #01,#01,#02,#c2,#6b,#43,#6c,#a8
	db #6c,#00,#00,#00,#00,#ff,#08,#05
	db #0d,#01,#23,#12,#6d,#ff,#02,#00
	db #00,#01,#00,#ee,#6c,#ff,#05,#00
	db #00,#02,#00,#ee,#6c,#08,#00,#0f
	db #6d,#ff,#09,#00,#0a,#01,#00,#15
	db #6d,#02,#2f,#59,#6d,#01,#28,#59
	db #6d,#01,#2a,#59,#6d,#02,#00,#56
	db #6d,#02,#00,#6a,#6d,#ff,#0a,#00
	db #00,#02,#f4,#6a,#6d,#ff,#06,#00
	db #00,#01,#00,#15,#6d,#01,#00,#ee
	db #6c,#02,#2f,#59,#6d,#01,#28,#59
	db #6d,#01,#2a,#59,#6d,#02,#2f,#59
	db #6d,#01,#34,#59,#6d,#01,#36,#59
	db #6d,#ff,#09,#00,#0a,#02,#2f,#59
	db #6d,#01,#34,#59,#6d,#01,#36,#59
	db #6d,#ff,#08,#06,#0d,#01,#2f,#12
	db #6d,#00,#00,#00,#00,#00,#ff,#08
	db #05,#0d,#01,#26,#12,#6d,#01,#00
	db #56,#6d,#ff,#05,#00,#00,#01,#00
	db #0f,#6d,#02,#00,#ee,#6c,#07,#00
	db #0f,#6d,#ff,#09,#00,#0a,#02,#00
	db #15,#6d,#ff,#0a,#00,#00,#02,#f4
	db #6a,#6d,#02,#00,#15,#6d,#ff,#09
	db #00,#05,#02,#00,#15,#6d,#ff,#06
	db #00,#00,#01,#00,#15,#6d,#01,#00
	db #ee,#6c,#02,#00,#6a,#6d,#ff,#09
	db #00,#0a,#02,#36,#59,#6d,#01,#3b
	db #59,#6d,#01,#3d,#59,#6d,#ff,#08
	db #06,#0d,#01,#32,#12,#6d,#00,#00
	db #00,#00,#02,#74,#6e,#02,#5b,#6e
	db #01,#ce,#6d,#08,#36,#6e,#01,#74
	db #6e,#03,#5b,#6e,#05,#2f,#6e,#02
	db #ce,#6d,#04,#36,#6e,#04,#2f,#6e
	db #01,#ce,#6d,#01,#5b,#6e,#01,#74
	db #6e,#08,#5b,#6e,#02,#2f,#6e,#01
	db #ce,#6d,#01,#74,#6e,#01,#5b,#6e
	db #02,#2f,#6e,#04,#36,#6e,#04,#74
	db #6e,#04,#36,#6e,#00,#08,#24,#08
	db #30,#08,#2e,#08,#32,#08,#24,#08
	db #30,#08,#2e,#08,#32,#08,#29,#08
	db #33,#08,#32,#08,#30,#08,#2b,#08
	db #32,#08,#30,#08,#32,#00,#04,#00
	db #00,#40,#01,#00,#04,#24,#04,#24
	db #04,#30,#04,#30,#04,#2e,#04,#2e
	db #04,#32,#04,#32,#04,#24,#04,#24
	db #04,#30,#04,#30,#04,#2e,#04,#2e
	db #04,#32,#04,#32,#04,#29,#04,#29
	db #04,#33,#04,#33,#04,#32,#04,#32
	db #04,#30,#04,#30,#04,#2b,#04,#2b
	db #04,#32,#04,#32,#04,#30,#04,#30
	db #04,#32,#04,#32,#00,#80,#00,#00
	db #04,#01,#04,#04,#04,#08,#04,#0d
	db #04,#14,#04,#11,#04,#0d,#04,#08
	db #00,#0c,#30,#04,#30,#10,#30,#0c
	db #30,#04,#30,#08,#2e,#08,#32,#10
	db #29,#10,#29,#0c,#2b,#04,#2b,#08
	db #26,#08,#29,#00,#04,#01,#02,#02
	db #0e,#01,#04,#01,#02,#02,#0e,#01
	db #04,#03,#01,#0d,#b4,#00,#04,#03
	db #01,#0d,#b4,#00,#08,#01,#01,#1f
	db #84,#03,#08,#01,#01,#1f,#84,#03
	db #08,#02,#00,#01,#10,#00,#04,#03
	db #01,#0d,#b4,#00,#04,#02,#00,#01
	db #10,#00,#08,#01,#01,#1f,#84,#03
	db #04,#01,#01,#1f,#84,#03,#04,#02
	db #00,#01,#10,#00,#00,#04,#01,#02
	db #02,#0e,#01,#04,#01,#02,#02,#0e
	db #01,#04,#01,#02,#02,#0e,#01,#04
	db #01,#02,#02,#0e,#01,#04,#01,#02
	db #08,#54,#01,#04,#01,#02,#08,#54
	db #01,#04,#01,#02,#08,#54,#01,#04
	db #01,#02,#08,#54,#01,#04,#01,#02
	db #0f,#86,#01,#04,#01,#02,#0f,#86
	db #01,#04,#01,#02,#0f,#86,#01,#04
	db #01,#02,#0f,#86,#01,#04,#01,#02
	db #14,#b8,#01,#04,#01,#02,#14,#b8
	db #01,#04,#01,#02,#14,#b8,#01,#04
	db #01,#02,#14,#b8,#01,#00,#20,#00
	db #00,#00,#00,#00,#00,#08,#01,#02
	db #1e,#ac,#03,#04,#01,#07,#02,#00
	db #00,#04,#01,#02,#08,#ac,#03,#04
	db #01,#02,#1f,#de,#03,#04,#01,#02
	db #1f,#de,#03,#08,#01,#07,#02,#00
	db #00,#00,#08,#07,#00,#01,#00,#00
	db #08,#07,#00,#01,#00,#00,#08,#07
	db #00,#01,#00,#00,#08,#07,#00,#01
	db #00,#00,#00,#04,#07,#00,#01,#00
	db #00,#04,#07,#00,#01,#00,#00,#04
	db #07,#00,#01,#00,#00,#04,#07,#00
	db #01,#00,#00,#04,#07,#00,#01,#00
	db #00,#04,#07,#00,#01,#00,#00,#04
	db #07,#00,#01,#00,#00,#04,#07,#00
	db #01,#00,#00,#00
	di
	ld l,(ix+#09)
	ld h,(ix+#0a)
	ld (l6f09),hl
	push ix
	pop hl
	call #bcaa
	call l6f08
	ei
	ret
	ld hl,l6ee1
	ld b,#81
	ld c,#fc
	ld de,l6ee8
	call #bcef
	ld hl,l6edb
	ld de,#0001
	ld bc,#0001
	call #bce9
	ret
	ld hl,l6edb
	call #bcec
	ret
.l6ee1 equ $ + 6
.l6edb
	db #00,#00,#01,#00,#01,#00,#00,#00
	db #00,#81,#e8,#6e,#fc
.l6ee9 equ $ + 1
.l6ee8
	ld a,#ff
	dec a
	ld (l6ee9),a
	ret nz
.l6ef0 equ $ + 1
	ld a,#00
	ld (l6ee9),a
.l6ef5 equ $ + 1
	ld a,#05
.l6ef7 equ $ + 1
	add #00
	ld (l6ef5),a
	ld c,a
	ld a,#06
	call #bd34
.l6f02 equ $ + 1
	ld a,#7e
	dec a
	ld (l6f02),a
	ret nz
.l6f09 equ $ + 1
.l6f08
	ld hl,l6f4b
.l6f0b
	ld a,(hl)
	and a
	jp z,l6f2a
	jp m,l6f33
	ld (l6f02),a
	inc hl
	ld a,(hl)
	ld (l6ef7),a
	inc hl
	ld a,(hl)
	ld (l6ef0),a
	inc hl
	ld (l6f09),hl
	ld a,#01
	ld (l6ee9),a
	ret
.l6f2a
	inc hl
	ld a,(hl)
	ld (l6ef5),a
	inc hl
	jp l6f0b
.l6f33
	inc hl
	ld a,(hl)
	inc hl
	ld h,(hl)
	ld l,a
	jp l6f0b
	db #00,#1e,#06,#fb,#01,#00,#00,#04
	db #02,#01,#17,#01,#01,#7f,#00,#00
.l6f4b
	db #ff,#48,#6f,#81,#06,#00,#00,#00
	db #1f,#0f,#ff,#ff,#3b,#6f,#84,#06
	db #00,#00,#00,#1f,#0f,#ff,#ff,#3b
	db #6f,#82,#03,#00,#0a,#00,#00,#00
	db #ff,#ff,#48,#6f,#82,#08,#00,#00
	db #00,#14,#00,#ff,#ff,#48,#6f,#81
	db #00,#00,#3c,#00,#00,#0f,#82,#00
	db #48,#6f,#84,#00,#00,#32,#00,#00
	db #0f,#82,#00,#48,#6f,#82,#02,#01
	db #64,#00,#00,#00,#14,#00,#48,#6f
	db #82,#01,#00,#e8,#03,#00,#00,#e8
	db #03,#48,#6f,#82,#0a,#00,#32,#00
	db #00,#00,#5a,#00,#48,#6f,#00,#00
;#3838
;
.init_music
;
	ld hl,#6a79
	call l696f
	;xor a
	;call #bc0e
	;ld de,l38d3
	;call l38b5
	ld iy,#6bb9
	jp l673e
;
.game_name
	db "Ricochet",0
.game_year
	db "1986",0
.game_publisher
	db "Blaby Computer Games",0
.music_author
	db "",0
.music_comment
	db "",0

	read "music_end_v1_0.asm"
